package com.houweishi.module.oaEntry.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * 入职申请对象 oa_entry
 *
 * @author yqq
 * @date 2023-07-19
 */
@Data
public class OaEntry extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 流水单号 */
    @Excel(name = "流水单号")
    private String serialNum;

    /** 公司 */
    @Excel(name = "公司")
    private String company;

    /** 部门 */
    @Excel(name = "部门")
    private String deptName;

    /** 部门id */
    @Excel(name = "部门id")
    private Long deptId;

    /** 职级 */
    @Excel(name = "职级")
    private String rankName;

    /** 职级id */
    @Excel(name = "职级id")
    private Long rankId;

    /** 岗位 */
    @Excel(name = "岗位")
    private String post;

    /** 岗位id */
    @Excel(name = "岗位id")
    private Long postId;

    /** 类型 */
    @Excel(name = "类型")
    private String type;

    /** 姓名 */
    @Excel(name = "姓名")
    private String userName;

    /** 用户id */
    @Excel(name = "用户id")
    private Long userId;

    /** 生肖 */
    @Excel(name = "生肖")
    private String animalSign;

    /** 性别 */
    @Excel(name = "性别")
    private String sex;

    /** 手机 */
    @Excel(name = "手机")
    private String phoneNum;

    /** 身份证 */
    @Excel(name = "身份证")
    private String identification;

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate birthday;

    /** 年龄 */
    @Excel(name = "年龄")
    private String age;

    /** 身高 */
    @Excel(name = "身高")
    private String height;

    /** 体重 */
    @Excel(name = "体重")
    private String weight;

    /** 健康情况 */
    @Excel(name = "健康情况")
    private String health;

    /** 实习薪资 */
    @Excel(name = "实习薪资")
    private BigDecimal internshipSalary;

    /** 试用时间 */
    @Excel(name = "试用时间")
    private Integer probationTime;

    /** 试用期工资 */
    @Excel(name = "试用期工资")
    private BigDecimal probationSalary;

    /** 转正后工资 */
    @Excel(name = "转正后工资")
    private BigDecimal positiveSalary;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate entryDate;

    /** 籍贯 */
    @Excel(name = "籍贯")
    private String nativePlace;

    /** 民族 */
    @Excel(name = "民族")
    private String nation;

    /** 学历 */
    @Excel(name = "学历")
    private String educational;

    /** 政治面貌 */
    @Excel(name = "政治面貌")
    private String politicalStatus;

    /** 婚姻状况 */
    @Excel(name = "婚姻状况")
    private String maritalStatus;

    /** 开户行 */
    @Excel(name = "开户行")
    private String bankDeposit;

    /** 银行账号 */
    @Excel(name = "银行账号")
    private String bankAccountNumber;

    /** 现住址 */
    @Excel(name = "现住址")
    private String presentAddress;

    /** 紧急联系人 */
    @Excel(name = "紧急联系人")
    private String emergencyContact;

    /** 所属关系 */
    @Excel(name = "所属关系")
    private String ownership;

    /** 手机 */
    @Excel(name = "手机")
    private String emergencyPhone;

    /** 商业保险 */
    @Excel(name = "商业保险")
    private String commercialInsurance;

    /** 劳动合同签约时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "劳动合同签约时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date laborContractSigningTime;

    /** 劳动合同到期时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "劳动合同到期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date laborContractExpirationTime;

    /** 技能 */
    @Excel(name = "技能")
    private String skill;

    /** 奖励证书 */
    @Excel(name = "奖励证书")
    private String awardCertificate;

    /** 爱好 */
    @Excel(name = "爱好")
    private String hobby;

    /** 自我评价 */
    @Excel(name = "自我评价")
    private String selfEvaluation;

    /** 发展期望 */
    @Excel(name = "发展期望")
    private String developmentExpectation;

    /** 业务状态 */
    @Excel(name = "业务状态")
    private String businessStatus;

    /** 申请人id */
    @Excel(name = "申请人id")
    private Long applyUserId;

    /** 申请人 */
    @Excel(name = "申请人")
    private String applyUserName;

    /** 是否使用模板（1是 2否） */
    @Excel(name = "是否使用模板", readConverterExp = "1=是,2=否")
    private String typeStatus;

    /** 审批人id(多个） */
    @Excel(name = "审批人id(多个）")
    private String approver;

    /** 审批人姓名(多个） */
    @Excel(name = "审批人姓名(多个）")
    private String approverName;

    /** 抄送人id（多个） */
    @Excel(name = "抄送人id", readConverterExp = "多=个")
    private String copyerId;

    /** 抄送人姓名(多个） */
    @Excel(name = "抄送人姓名(多个）")
    private String copyerName;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 工作经验信息 */
    private List<OaEntryWorkExperience> oaEntryWorkExperienceList;

    /**
     *教育培训经历
     */
    private List<OaEntryEducationExperience> oaEntryEducationExperienceList;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("serialNum", getSerialNum())
                .append("company", getCompany())
                .append("deptName", getDeptName())
                .append("deptId", getDeptId())
                .append("rankName", getRankName())
                .append("rankId", getRankId())
                .append("post", getPost())
                .append("postId", getPostId())
                .append("type", getType())
                .append("userName", getUserName())
                .append("userId", getUserId())
                .append("animalSign", getAnimalSign())
                .append("sex", getSex())
                .append("phoneNum", getPhoneNum())
                .append("identification", getIdentification())
                .append("birthday", getBirthday())
                .append("age", getAge())
                .append("height", getHeight())
                .append("weight", getWeight())
                .append("health", getHealth())
                .append("internshipSalary", getInternshipSalary())
                .append("probationTime", getProbationTime())
                .append("probationSalary", getProbationSalary())
                .append("positiveSalary", getPositiveSalary())
                .append("entryDate", getEntryDate())
                .append("nativePlace", getNativePlace())
                .append("nation", getNation())
                .append("educational", getEducational())
                .append("politicalStatus", getPoliticalStatus())
                .append("maritalStatus", getMaritalStatus())
                .append("bankDeposit", getBankDeposit())
                .append("bankAccountNumber", getBankAccountNumber())
                .append("presentAddress", getPresentAddress())
                .append("emergencyContact", getEmergencyContact())
                .append("ownership", getOwnership())
                .append("emergencyPhone", getEmergencyPhone())
                .append("commercialInsurance", getCommercialInsurance())
                .append("laborContractSigningTime", getLaborContractSigningTime())
                .append("laborContractExpirationTime", getLaborContractExpirationTime())
                .append("skill", getSkill())
                .append("awardCertificate", getAwardCertificate())
                .append("hobby", getHobby())
                .append("selfEvaluation", getSelfEvaluation())
                .append("developmentExpectation", getDevelopmentExpectation())
                .append("businessStatus", getBusinessStatus())
                .append("applyUserId", getApplyUserId())
                .append("applyUserName", getApplyUserName())
                .append("typeStatus", getTypeStatus())
                .append("approver", getApprover())
                .append("approverName", getApproverName())
                .append("copyerId", getCopyerId())
                .append("copyerName", getCopyerName())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("oaEntryWorkExperienceList", getOaEntryWorkExperienceList())
                .append("oaEntryEducationExperienceList", getOaEntryEducationExperienceList())
                .toString();
    }
}
